import { axios, jobAxios } from '@/utils/request'

/**
 * 查询概念
 *
 * @author luowen
 * @date 2021-06-01 21:50:48
 */
export function schemaPage(parameter) {
  return axios({
    url: '/schema/page',
    method: 'get',
    params: parameter
  })
}

/**
 * 概念列表
 *
 * @author luowen
 * @date 2021-06-01 21:50:48
 */
export function schemaList(parameter) {
  return axios({
    url: '/schema/list',
    method: 'get',
    params: parameter
  })
}

/**
 * 添加概念
 *
 * @author luowen
 * @date 2021-06-01 21:50:48
 */
export function schemaAdd(parameter) {
  return axios({
    url: '/schema/add',
    method: 'post',
    data: parameter
  })
}

/**
 * 编辑概念
 *
 * @author luowen
 * @date 2021-06-01 21:50:48
 */
export function schemaEdit(parameter) {
  return axios({
    url: '/schema/edit',
    method: 'post',
    data: parameter
  })
}

/**
 * 删除概念
 *
 * @author luowen
 * @date 2021-06-01 21:50:48
 */
export function schemaDelete(parameter) {
  return axios({
    url: '/schema/delete',
    method: 'post',
    data: parameter
  })
}

/**
 *  概念树状列表
 * @param {Object} parameter
 */
export function schemaTree(parameter) {
  return axios({
    url: '/schema/tree',
    method: 'post',
    data: parameter
  })
}

export function schemaRelation() {
  return axios({
    url: '/schema/relation',
    method: 'post'
  })
}

/**
 *  概念分片字段
 */
export function schemaColumnPage(parameter) {
  return jobAxios({
    url: '/kgGraphPublish/conceptColumns',
    method: 'get',
    params: parameter
  })
}

/**
 *  图谱首页
 *  全部概念_带有属性
 */
export function listConceptWithAttrs() {
  return axios({
    url: '/schema/listConceptWithAttrs',
    method: 'get'
  })
}

/**
 *  图谱首页
 *  全部概念_带有属性
 *  图谱预览_查询
 */

export function conceptAndAttrsList() {
  return Promise.all([schemaList({}), listConceptWithAttrs()])
    .then((result) => {
      const error = result.find((it) => !it.success)
      if (error) {
        return Promise.reject(Error('加载失败!'))
      } else {
        return Promise.resolve({
          conceptList: result[0].data,
          conceptAttrsList: result[1].data
        })
      }
    }).catch((e) => {
      return Promise.reject(e)
    })
}
